#include<stdio.h>

int check(int a, int b, int c) { // 为了方便且整洁，我们将判定三个数是否合法单独写成了函数
    if(a * 2 != b || a * 3 != c) return 0; // 不满足比例要求
    int count[10]; // 用数组记录每个数字的出现次数
    int i=1;
    for(;i<=9;i++) count[i] = 0; // 以防万一，将 count 中的值设为我们认为合理的初始值
    while(a != 0) {
        ++count[a % 10];
        a /= 10;
    } // 这四行代码将 a 不断取最后一位记录在 count 上并将 a 除以 10，可以发现运行结束后会对于 a 中的每一个数字 d 使得 count[d] 获得加一
    while(b != 0) {
        ++count[b % 10];
        b /= 10;
    }
    while(c != 0) {
        ++count[c % 10];
        c /= 10;
    } // 重复对 b 和 c 的操作
    for(i=1;i<=9;i++) {
        if(count[i] != 1) { // 如果三个数合法的话，那么每个数字都应该出现了正好 1 次
            return 0;
        }
    }
    return 1;
}

int main() {
    int a, b, c;
    for(a=123;a<=987;a++) { // a b c 中的任何一个都应该属于 [123, 987]，应该很好理解
        for(b=123;b<=987;b++) {
            for(c=123;c<=987;c++) {
                if(check(a, b, c)) { // 如果 a b c 三个数合法
                    printf("%d %d %d\n", a, b, c);
                }
            }
        }
    }
}